void memorycopy(char *src, char* dest, unsigned int len)
{
    if(dest == src || len == 0) return;
    if((unsigned long)len >= sizeof(unsigned long))
    {
        unsigned long* _dest = (unsigned long*) dest;
        unsigned long *_src = (unsigned long*)src;
        for(unsigned int i = 0; i < len / sizeof(unsigned long); i++)
            _dest[i] = _src[i];
    }
    for(unsigned int i = len / sizeof(unsigned long) * sizeof(unsigned long); i < len; i++) 
        dest[i] = src[i];
    return;
}

